# 最简单的多态的体现
'''

# 父类
class Animal(object):
    def eat(self):
        print("吃的方法")

# 鱼类
class Fish(Animal):
    def eat(self):
        print("大鱼吃小鱼,小鱼吃虾米")

# 猫类
class Cat(Animal):
    def eat(self):
        print("猫爱偷腥!")

# 犬类
class Dog(Animal):
    def eat(self):
        print("闻一闻,舔一舔,啃一啃!")

fish = Fish()
cat = Cat()
dog = Dog()

fish.eat()
cat.eat()
dog.eat()
'''

'''
在父类和子类中出现了函数重名的情况,会调用子类的函数,   子类和父类函数重名的现象叫做重载(重写)

不同的子类之间调用和父类相同的方法,调用的都是子类自己的方法, 这就是多态的一种体现.
'''


# 另外一种灵活的机制.
class Animal(object):
    # who表示哪个子类的对象
    def eat(self, who):
        who.eat()


# 鱼类
class Fish(Animal):
    def eat(self):
        print("大鱼吃小鱼,小鱼吃虾米")


# 猫类
class Cat(Animal):
    def eat(self):
        print("猫爱偷腥!")


# 犬类
class Dog(Animal):
    def eat(self):
        print("闻一闻,舔一舔,啃一啃!")


animal = Animal()
animal.eat(Fish())
animal.eat(Cat())
animal.eat(Dog())
